using System;
using System.Collections.Generic;
using CI.Interfaces;

namespace CI
{
    /// <summary>
    /// Interface for Data Access Layer to be supported for implementations
    /// </summary>
    public interface IDAL
    {
        /// <summary>
        /// loads the hosting environment into a class provided
        /// </summary>
        /// <param name="environment">environment name</param>
        /// <param name="hostEnvironment">environment</param>
        /// <param name="maxLoadCount">max number of organisms to load</param>
        /// <param name="selectedOrganismsToLoad"></param>
        /// <returns>new or updated hosting environment</returns>
        IHostingEnvironment LoadHostingEnvironment(string environment, IHostingEnvironment hostEnvironment, int maxLoadCount, List<Guid> selectedOrganismsToLoad);
        /// <summary>
        /// Saves the organisms in a environment
        /// </summary>
        /// <param name="environment">environment name</param>
        /// <param name="hostEnvironment">Current Hosting Enviorment</param>
        /// <param name="maxSaveCount">max number of organisms to save</param>
        /// <returns>true if successfully saved</returns>
        bool SaveHostingEnvironment(string environment, IHostingEnvironment hostEnvironment, int maxSaveCount);
    }
}


